Importing the requirements

Data Pre-processing

As this dataset has no missing values, we are proceeding with further cleaning processes such as (One-Hot Coding and Standard Scaler).

One-Hot Coding:

Interpretation: This dataset has certain categorical features such as chestpain_type, sex of the patient, restingecg, slope_ST. And we cannot build machine learning models such as logistic regression, random Forest and XGBoost with these categorical features in it. Therefore, we apply One-Hot Coding to convert all the categorical features into numerical features. Thus making it easier to train our models and keep our categories equally weighted and unordered.

Now, we can see that all the categorical features have been converted to numerical features.

Standard Scaler:

This above code loads the dataset and applies standard scaling to selected numerical features (Age, RestingBP, Cholesterol, MaxHR, and Oldpeak). Using StandardScaler, we transforms each feature to have mean = 0 and standard deviation = 1, which helps improve the performance of many machine learning models.

Descriptive Statistics

Explanation of each row name:

Row Name Description
count Number of non-missing (non-NaN) entries in the column.
mean The average (arithmetic mean) value of the column.
std Standard deviation — how much the values vary from the mean.
min Minimum value in the column.
25% 1st quartile (Q1) — 25% of values are below this.
50% Median (Q2) — 50% of values are below this.
75% 3rd quartile (Q3) — 75% of values are below this.
max Maximum value in the column.

Exploratory Data Analysis

Univariate Analysis:

Interpretation of output:

Univariate analysis focuses on analyzing one variable at a time, helping us understand its distribution, central tendency, variability, and potential issues (like outliers or skewness).

Numerical Variables (e.g., age, cholesterol, restingbp, oldpeak, maxhr) Boxplots shows:

  1. Whether the variable is normally distributed or skewed
  2. Presence of outliers (seen in cholesterol or oldpeak)
  3. Range and concentration of values
  4. Common age group or cholesterol levels among patients

Categorical Variables (e.g., sex, chestpaintype, restingecg, exerciseangina, heartdisease) Count plots shows:

  1. Class distribution — e.g., how many males vs females
  2. Which chest pain type is most common
  3. Target variable balance — are more people with or without heart disease?

Bivariate Analysis:

Interpretation of output:

The above violin plots show the distribution and density of numerical features (like age, cholesterol, etc.) across the two target classes:

0 = No heart disease 1 = Has heart disease

These insights help us to understand how each feature relates to the likelihood of heart disease.

1. Age vs. Heart Disease

People with heart disease (1) tend to be older on average. Violin plot for class 1 is often shifted to higher ages.

2. Cholesterol vs. Heart Disease

The distribution can be wide and overlapping, meaning cholesterol alone is not a strong separator. Possible outliers may appear as long tails or thick bulges.

3. RestingBP vs. Heart Disease

Similar to cholesterol, may not have a clear separation. Still useful in combination with other variables (e.g., oldpeak or age).

4. MaxHR vs. Heart Disease

Lower MaxHR is often seen in heart disease patients. You may see the violin for class 1 more concentrated at lower heart rates.

5. Oldpeak vs. Heart Disease

This is usually a strong indicator. People with heart disease (1) often have higher oldpeak values (seen as wider top in class 1).

Interpretation of output:

The KDE plot code is performing bivariate analysis using Kernel Density Estimation (KDE) to visualize the distribution of each numerical variable across the two classes of heartdisease.

This KDE plot does:

  1. It plots the smoothed probability distribution for patients with and without heart disease.
  2. Different colors are used for each class (0 = No, 1 = Yes) via hue='heartdisease'.
  3. fill=True makes the curves easier to compare visually.
  4. common_norm=False ensures each group is normalized independently for better comparison.

Finding insights from the output: 1. Shape & Overlap If the KDE curves for heart disease = 0 and 1 overlap heavily, the variable may not be a strong discriminator. Less overlap means the variable helps distinguish between the two groups.

2. Peak Shifts If one group has a peak at a higher or lower value, it indicates a trend: Example: oldpeak peaks at higher values for heart disease patients. maxhr peaks at higher values for healthy individuals.

Feature Distribution Insight Predictive Strength
Age Older patients more likely have heart disease Moderate
Cholesterol Broad overlap; not a strong separator Low
RestingBP Overlapping curves; low separation Low
MaxHR Lower max HR seen in heart disease patients Moderate to Strong
Oldpeak Higher oldpeak values linked to heart disease Strong

Interpretation:

  1. The x-axis shows age values (e.g., 28 to 77 years).
  2. The y-axis shows the number of patients for each age.

Bars are stacked with:

  1. One color for patients without heart disease (heartdisease = 0)
  2. Another color for patients with heart disease (heartdisease = 1)
  3. The chart shows the distribution of heart disease across age groups.

Insights drawn:

1. Age Groups with Highest Cases:

Some age groups (e.g., 52, 54, 58, 60) may have taller bars, meaning more people in that age range are in the dataset. We can identify peak heart disease ages if the upper segment (disease = 1) dominates.

2. Heart Disease Tends to Increase with Age:

In many datasets, you’ll notice that older age groups (50–65+) have more red or dark-colored segments → indicating more cases of heart disease. Younger ages (e.g., 30s, 40s) have smaller bars and often more blue → less likely to have heart disease.

3. Comparing Within Age Groups:

Within any specific age, if the red segment (disease = 1) is taller than blue, that age has more heart disease patients. Some mid-age groups might have balanced bars → indicating mixed risk.

Interpretation of output:

Plot details:

  1. x-axis: heartdisease (binary:0 = No heart disease, 1 = Heart disease)
  2. y-axis: oldpeak values (ST depression after exercise)

Points: Each point is a patient, and their vertical position shows their oldpeak value.

jitter=True: Adds horizontal spread to prevent points from overlapping.

Color: Different hues (from Set2) for visual distinction.

Insights drawn:

1. Patients Without Heart Disease (x = 0):

  1. Most points are clustered near oldpeak = 0.
  2. Very few high oldpeak values.
  3. This suggests lower ST depression is common among healthy patients.

2. Patients With Heart Disease (x = 1):

  1. Wider spread of oldpeak values.
  2. More patients have moderate to high oldpeak (e.g., values > 1.5).
  3. Indicates higher ST depression is more associated with heart disease.

Interpretation of output:

This violin plot visualizes how age is distributed across different types of chest pain, helping identify patterns in age-related chest pain presentations among heart patients.

Plot details:

x-axis: chestpaintype (Mapped categories: Typical Angina, Atypical Angina, Non-Anginal Pain, Asymptomatic)

y-axis: age of the patients

Violin Shape: Shows distribution, density, and spread of age for each chest pain category.

Insights drawn:

Chest Pain Type Age Distribution Insight
Typical Angina More common in older adults
Atypical Angina Occurs in mid-age groups
Non-Anginal Pain Wide range of ages affected
Asymptomatic Seen mostly in older adults, may indicate silent risk

Interpretation of output:

The beeswarm plot (a variation of a scatter plot with jittering) visualizes how cholesterol levels are distributed among patients with and without heart disease.

Plot details:

x-axis: heartdisease

  1. 0 = No heart disease
  2. 1 = Has heart disease

y-axis: cholesterol (in mg/dL)

Each dot: A single patient’s cholesterol level. Points are spread out horizontally to avoid overlap, giving a "beeswarm" look.

Insights drawn:

Observation Interpretation
Wide overlap between class 0 and 1 Cholesterol is not a standalone discriminator
High values in both classes Some patients have high cholesterol but no disease
Spread is more vertical than grouped Cholesterol varies widely within both groups

Interpretation of output:

This heatmap visualizes the correlation coefficients between all numeric variables in the dataset, helping identify relationships that are:

  1. Strongly positive (values close to +1)
  2. Strongly negative (values close to -1)
  3. Weak or no correlation (values near 0)

The value shown at the intersection of two variables is the Pearson correlation coefficient. Color:

1. Dark red = strong positive correlation 2. Dark blue = strong negative correlation 3. Lighter shades = weak or no correlation

The diagonal is always 1.00 because each variable is perfectly correlated with itself.

Insights drawn:

Feature Correlation Meaning
oldpeak +0.40 Higher ST depression = more likely heart disease
sex +0.30 Males (usually coded as 1) more likely to have heart disease
chestpaintype +0.28 Some chest pain types strongly associated with heart disease
fastingbs +0.26 High fasting blood sugar may indicate heart risk
exerciseangina –0.49 Presence of exercise-induced angina reduces heart disease likelihood (inverse)
maxhr –0.40 Higher maximum heart rate = lower risk (healthy heart performance)
age –0.22 Mild negative relation — older people slightly less represented (data-specific)
cholesterol –0.06 Very weak relationship — cholesterol alone isn't a good predictor here

Sankey Diagram

Interpretation of output:

The Sankey diagram illustrates the movement of patients experiencing various chest pain types to their corresponding heart disease results. This type of visualization is superb for displaying ratios and shifts among categorical characteristics.

Plot details:

Left nodes: Different chest pain types (e.g., ASY, ATA, NAP, TA)

Right nodes: Heart disease outcomes:

  1. No Disease
  2. Heart Disease

Links (flows):

Width = number of patients

Color: Red if the outcome is heart disease and gray if the outcomme is no heart disease

Insights drawn:

1. Asymptomatic (ASY): The largest red flow likely comes from ASY, indicating a high proportion of heart disease among asymptomatic patients.

Result: Many people with no noticeable symptoms (ASY) still have heart disease — a major risk indicator.

2. Atypical Angina (ATA) and Non-Anginal Pain (NAP) These chest pain types have more balanced flows, with both red and gray.

Result: ATA and NAP occur in both groups but tend to lean slightly more toward no disease.

3. Typical Angina (TA): May have fewer overall cases in the dataset. Possibly a mix of both outcomes or slightly skewed toward one.

Interpretation:

We have taken 4 random samples from the dataset to setup the simulated ECG plot based on the maximum heart-rate(maxhr), oldpeak, restingecg. It helps us to visualize patient conditions and simulate how ECG readings might vary with different risk indicators.

Plot details:

Each subplot represents one patient's simulated ECG waveform.

Color:

🔴 Red: Patient has heart disease (HeartDisease = 1)

🟢 Green: No heart disease (HeartDisease = 0)

The waveform is generated using:

maxhr: Affects the frequency (how fast the heart beats)

oldpeak: ST depression, reduces the baseline

restingecg:

'Normal': Baseline sinusoidal

'LVH': Adds abnormal sinus component (left ventricular hypertrophy)

'ST': Adds an offset (ST abnormality)

Observations:

1. Waveform Shape: Healthy patients (green) generally have a smooth and regular waveform.

Heart disease patients (red) often show:

  1. Flattened or depressed waveforms (from oldpeak)
  2. Added noise or oscillations (if restingecg = LVH or ST)

2. Heart Rate Impact: Higher maxhr results in faster oscillations (tighter waveform cycles). You can visually compare heart rhythm frequency between patients.

3. Disease vs. Non-Disease: Simulated ECGs for patients with heart disease may show:

  1. Depressed amplitude
  2. Additional abnormalities or noise
  3. Higher baseline if restingecg = ST

Interpretation:

This 2D KDE (Kernel Density Estimate) plot visualizes the joint distribution between:

  1. maxhr (Maximum Heart Rate Achieved)

  2. oldpeak (ST depression induced by exercise)

It shows where patients are concentrated in terms of these two important clinical variables.

Plot details:

X-axis: maxhr – how high the patient's heart rate went

Y-axis: oldpeak – a measure of stress-induced ST depression

Color Intensity: Shows density of data points

Darker red = more patients in that region

Lighter/white = fewer or no patients

Observations:

1. Densest Region (Hotspot) Most patients cluster around:

  1. maxhr between 130–170 bpm

  2. oldpeak around 0 to 1

This suggests the majority of patients had normal ST response and moderately high heart rates during stress.

2. Rare Combinations Very few patients have:

  1. oldpeak > 3 (severe ST depression)

  2. maxhr < 100 (inability to reach high heart rate)

These could be potential high-risk cases, but rare in the dataset.

We might notice that as oldpeak increases, maxhr tends to decrease slightly, indicating possible heart dysfunction or exercise intolerance.

Hexbin Plot

Interpretation:

The hexbin plot is a two-dimensional histogram using hexagonal bins to show the density of data points, especially useful when visualizing large datasets with overlapping values.

Plot details:

X-axis: restingbp — Resting Blood Pressure (in mm Hg)

Y-axis: oldpeak — ST Depression induced by exercise

Color Intensity (from the 'magma' colormap):

  1. Represents log-scaled frequency of data points in each bin

  2. Brighter/yellower hexes = More data points in that region

  3. Darker/purpler hexes = Fewer data points

Colorbar: Shows the log10(count) scale of frequency

Observations:

Region on Plot Interpretation
High concentration around BP ~120–140 & Oldpeak ~0 Most patients had normal blood pressure and no ST depression
Scattered points with high Oldpeak (>2) Fewer patients had severe exercise-induced ST depression
Low RestingBP & High Oldpeak Very rare — may signal abnormal or concerning cases

3D scatter plot

Interpretation:

This 3D scatter plot created using Plotly provides an interactive visual analysis of three important features and their relation to heart disease presence (heartdisease = 1) or absence (heartdisease = 0).

Plot details:

X-axis → oldpeak: ST depression after exercise (a heart stress indicator)

Y-axis → maxhr: Maximum heart rate achieved

Z-axis → age: Patient’s age

Color → Indicates heart disease presence:

0 (typically shown in blue) → No heart disease

1 (typically shown in red) → Heart disease

Observations:

1. Clustering You may notice distinct clusters of red and blue points:

*Heart disease cases (red) often cluster in regions with:

Higher oldpeak

Lower maxhr

Older age

No disease cases (blue) appear in:

Lower oldpeak

Higher maxhr

Younger to middle-aged individuals

2. Correlations Inverse relation between maxhr and disease status:

Low max heart rate → more likely to have heart disease.

Positive relation between oldpeak and disease:

Higher ST depression → more red points (heart disease).

Age trend:

Older patients tend to be more frequently red-coded.

Feature Trend in Heart Disease Patients
oldpeak Higher
maxhr Lower
age Older

WHO/ISH chart

Interpretation:

The ISH chart (Importance-Severity-Hazard) is an advanced visualization that helps evaluate features based on:

Importance: how strongly a feature correlates with the target (HeartDisease)

Severity: the variability (standard deviation) of a feature

Hazard: proportion of extreme or outlier values in the feature

Plot details:

X-axis: Feature Importance (correlation)

Y-axis: Severity Score (based on domain knowledge or variance)

Size/Color: Hazard Level (based on anomaly count or outlier proportion)

Feature Importance Severity Hazard Level Interpretation
Oldpeak High Moderate High Strong predictor of heart disease, and extreme values indicate serious ST depression (ischemia).
ChestPainType High Low Moderate Highly predictive, but doesn’t vary as much — likely categorical.
ST_Slope Moderate Low Low Useful predictor, not many outliers.
MaxHR Moderate High Moderate Strong clinical variability, may indicate exercise tolerance issues.
Cholesterol Low High Very High Not a strong predictor here, but many extreme values suggest data quality issues or rare conditions.
RestingBP Low Moderate High Not a strong predictor on its own, but outliers may flag hypertensive emergencies.
  1. Features like Oldpeak and ChestPainType are highly important, and Oldpeak also carries a high hazard due to extreme clinical readings.

  2. Cholesterol, while clinically important, shows low predictive power here — possibly due to data entry errors (e.g., zeros).

This chart helps balance statistical importance with clinical risk, making it a powerful tool for explainable AI in healthcare.

Feature Engineering for Exploratory Insights

Interpretation:

We perform feature engineering by transforming and creating new variables to extract more meaningful insights from the dataset.

Steps taken:

  1. We converted the categorical features into binary features for e.g: Converts text labels ('Y', 'N') into numeric binary (1, 0) values.

  2. We created a new categorical feature called age_group which makes it easier to analyze heart disease prevalence by life stage.

  3. We normalized cholestrol between 0 and 1. We combine it with fastingbs to create a composite risk factor called metabolic_risk. It helps to flag patients with high cholestrol and high BP.

  4. We flag patient experiencing exercise-induced stress AND ST depression > 2. These conditions together may indicate critical heart risk. severe_stress = 1 means the patient likely needs further attention.

We then finally print the new columns:

  1. age_group

  2. cholesterol_norm

  3. metabolic_risk

  4. severe_stress

IMPORTANT NOTE:

“These features were engineered during EDA to explore patterns in the data. However, they were not included in model training.”

Feature Importance Analysis

Interpretation:

  1. Higher score → More influence in the decision-making process of the model.

  2. Lower score (near 0) → Minimal or no contribution to prediction.

ST_Slope has the highest importance (0.24), it means this is the most influential factor for predicting heart disease in our dataset.

FastingBS has the lowest importance (0.018), it means this has no impact on the model's decisions as it has low variance.

Performing Two-Sample T-test

Quantitative variables in our dataset:

Column Name Description
age Age in years
restingbp Resting blood pressure (in mm Hg)
cholesterol Serum cholesterol (in mg/dL)
maxhr Maximum heart rate achieved
oldpeak ST depression induced by exercise

Interpretation:

Null Hypothesis (H₀): There is no significant difference in the mean value of the variable between patients with and without heart disease.

Alternative Hypothesis (H₁): There is a significant difference in the mean value of the variable between the two groups.

Test Type Used: Independent two-sample t-test (Two-tailed)

Significance level: typically (α=0.05)

Observations:

Feature t-statistic p-value Significant? (p < 0.05) Interpretation
Age -8.90 0.000 ✅ Yes Heart disease patients are significantly older than non-heart patients.
RestingBP -3.28 0.001 ✅ Yes Resting blood pressure is significantly lower in heart disease patients.
Cholesterol 7.24 0.000 ✅ Yes Heart disease patients have significantly higher cholesterol levels.
MaxHR 13.23 0.000 ✅ Yes Maximum heart rate is significantly higher in heart disease patients. (Unusual; may need to check data)
Oldpeak -13.36 0.000 ✅ Yes Oldpeak is significantly lower in heart disease patients. (Also unusual, usually it increases)

Performing CHI2 Test:

Qualitative variables in our dataset:

Column Name Description
sex Biological sex of the patient (Male, Female)
chestpaintype Type of chest pain:
TA – Typical Angina
ATA – Atypical Angina
NAP – Non-Anginal Pain
ASY – Asymptomatic
restingecg Resting electrocardiogram results:
Normal – Normal ECG
ST – ST-T wave abnormality
LVH Left ventricular hypertrophy
exerciseangina Exercise-induced angina:
1 – Yes
0 – No
st_slope Slope of the peak exercise ST segment:
Up – Upsloping
Flat – Flat
Down – Downsloping

Interpretation:

Null Hypothesis (H₀): The mean heart disease status (i.e., probability of having heart disease) is the same across all categories of the variable.

Alternative Hypothesis (H₁): At least one category has a different mean heart disease status, suggesting an association with heart disease.

Test Type used: Chi_square test

Significance Level: typically (α=0.05)

Note: For each categorical feature in the dataset, we formulated and tested hypotheses to evaluate its association with heart disease status.

Observations:

Variable Chi² Statistic p-value df Significant? (p < 0.05) Interpretation
Sex 84.15 0.0000 1 ✅ Yes There is a significant association between sex and heart disease.
ChestPainType 268.07 0.0000 3 ✅ Yes Chest pain type is strongly associated with heart disease.
RestingECG 10.93 0.0042 2 ✅ Yes Resting ECG results are significantly related to heart disease.
ExerciseAngina 222.26 0.0000 1 ✅ Yes Exercise-induced angina is highly associated with heart disease.
ST_Slope 355.92 0.0000 2 ✅ Yes ST segment slope shows a very strong association with heart disease.

Contigency tables of Categorical variables vs Heart Disease

Anamoly Detection for Numerical features

NOTE:

192 medically unusual records has been detected. We will detect and handle them using IQR method.

Anamoly Detection for Categorical Features

NOTE:

No rare/outliers have been detected in the categorical features.

Model Building

Logistic Regression

Interpretation:

We have achieved accuracy of 84.78 before and now after applying the gridsearchcv, we got 85.10.

Random Forest

Interpretation:

We have increased the accuracy from 88.04 to 89.36 by applying IQR and scaling the features.

XGBoost

Interpretation:

In the beginning we got an accuracy of 86.96 using XGBoost model.

After implementing XGBClassifierfit() and early_stoppings, we got higher accuracy of 89.67

Naive Bayes Classifier

Before applying SMOTE to the models

Interpretation:

  1. Random Forest and Naive Bayes both achieved the highest accuracy (89.13%), with strong recall and F1 scores (above 0.90), making them highly effective even without addressing class imbalance.

  2. Naive Bayes has the highest precision (0.8942) among all, showing good ability to avoid false positives, and its ROC AUC (0.9280) is competitive with Random Forest.

  3. XGBoost performs reasonably well, but its recall (0.8824) is slightly lower than the top two, making it third-best in this setting.

  4. Logistic Regression shows high recall (0.9314)—meaning it identifies most positive cases—but has the lowest precision and ROC AUC, indicating more false positives and relatively weaker probability calibration.

Conclusion:

Random Forest and Naive Bayes are the top contenders with balanced and high performance across all metrics. However, Random Forest slightly edges out in terms of overall AUC and F1, making it the preferred choice.

Logistic Regression, while interpretable, performs slightly worse overall, especially in terms of precision and AUC. Balancing the dataset (as you did with SMOTE later) helps refine these models further, particularly boosting Naive Bayes and reducing Logistic Regression's bias toward the majority class.

After applying SMOTE to all the models

Interpretation:

  1. Random Forest outperforms all other models with the highest accuracy (90.76%), F1 Score (91.71%), and ROC AUC (0.9380). It balances both precision and recall, making it the best-performing model overall after applying SMOTE.

  2. Naive Bayes significantly improves after SMOTE. Its F1 score (90.82%) and ROC AUC (0.9316) are second only to Random Forest, indicating strong generalization on the balanced data.

  3. XGBoost also performs well but ranks third. While it retains a high ROC AUC (0.9283), its F1 Score (88.67%) is slightly lower than the top two.

  4. Logistic Regression remains the least performing model post-SMOTE, although it still maintains decent metrics (F1 Score: 87.38%, ROC AUC: 0.9034). It’s a good interpretable baseline, but lags behind in overall accuracy.

Conclusion:

After handling class imbalance using SMOTE, all models show noticeable improvement. However, Random Forest emerges as the top performer, offering the best trade-off between accuracy, precision, recall, and AUC. Naive Bayes also becomes a surprisingly competitive model. While XGBoost and Logistic Regression are still effective, they are slightly behind in precision and F1 performance. Thus, Random Forest is the recommended model for predicting heart disease in this context.

Model Evaluation

Interpretation:

The model is well-calibrated and separates positive (HeartDisease=1) and negative (HeartDisease=0) classes effectively.

The Random Forest model achieves high diagnostic accuracy for heart disease, as shown by a high ROC AUC score. This makes it a reliable model for identifying at-risk individuals in dataset.

Model Explainability - LIME - Local Interpretable Model-Agnostic Explanations

Interpretation:

Actual Predicted Probabilities:

  1. No Disease: 34%

  2. Disease: 66%

Features Supporting "Disease" (Orange Bars)

Feature Contribution Explanation
ST_Slope <= 1.0 +0.33 A flat ST slope is strongly associated with disease.
ChestPainType <= 0.0 +0.14 Encoded type 0 may be typical angina — likely indicating heart issues.
FastingBS > 0.0 +0.07 High fasting blood sugar (i.e., diabetes risk) contributes to disease likelihood.

Features Supporting "No Disease" (Blue Bars)

Feature Contribution Explanation
ExerciseAngina <= 0.0 -0.13 No exercise-induced angina reduces disease likelihood.
0.00 < Oldpeak <= 0.6 -0.09 Low ST depression suggests less heart strain — healthy sign.
MaxHR > 155.0 -0.06 High maximum heart rate usually reflects good fitness levels.

Feature Values (Bottom Table)

Feature Value Meaning
ST_Slope 1.00 Flat slope (possibly unhealthy)
ChestPainType 0.00 Encoded pain type (e.g., typical angina)
ExerciseAngina 0.00 No angina during exercise
Oldpeak 0.20 Very low ST depression — good
FastingBS 1.00 Fasting blood sugar is high (risk)
MaxHR 163.00 Very high HR — typically a healthy sign

Observations:

The model predicted "Disease" with 66% confidence, mainly because:

  1. The patient has flat ST slope and typical chest pain.

  2. Fasting blood sugar is high, a risk factor.

However, the model also noted healthy indicators:

  1. No angina during exercise.

  2. High max heart rate and low ST depression.

The LIME explanation shows that the model predicts Heart Disease (66% probability) due to key risk indicators such as a flat ST slope, typical chest pain, and high fasting blood sugar. Although some features like no exercise-induced angina and high maximum heart rate suggest good health, the risk factors outweigh the healthy signs, leading to the prediction.

Model Deployment-Interactive Dashboard

IMPORTANT NOTE:

I have created an interactive AI doctor app where we enter the patient details and the AI bot gives us advices on medications, exercise, food and tests need to be taken. And we can download the prescription in PDF format.

To access the app please click on the button : Open Heart Disease Prediction App above. This will take you to another tab and you can access it.